preg_replace 정규식 어디가 잘못됬는지 좀 봐주세요

preg_replace 정규식 어디가 잘못됬는지 좀 봐주세요

QA

preg_replace 정규식 어디가 잘못됬는지 좀 봐주세요

답변 2

본문

preg_replace 정규식 이용해서 33을 99로 바꾸고싶습니다 어떻게해야하나요?

단 숫자위치는 유동적인상황이니 위치로 찾는것만 제외하고요

 

숫자 67는 고정이고

그뒤숫자33을 99로 바꾸고싶습니다

 

밑에와같이하니까 67이 없어지네요

<?php
$str = "고깃집top68858867330104A123,감사@500입니다.";

$su = preg_replace("/67([\d]{2})/", "99", $str);

echo $su;

이 질문에 댓글 쓰기 :

답변 2

$su = preg_replace("/33/", "99", $str);

답변 먼저 감사합니다^^~ 지금 33만 찾아서 바꾸는건 저도알겠는데 제가 원했던건 67고정된값 바로뒤의수를 바꾸고싶다는거였습니다

본문예제에선 바로 33만 바꿈되지만 또 다른 상황이있거든요
단 67이란 고정값슨 분명히 다른예제상황에서도 존재하니
67은 포함시킨 값슨 변동안하지만 정규식엔 포함시켜 알고싶은거였습니다

질문 내용이 도대체 무엇인지 이해가 안되네요

6733--> 6799로 바꾼다는 것인지

6721, 6722, 6733, 6745...처럼 67뒤에 따라나오는 숫자를 바꾼다는 것인지...

질문을 쉽게 하가 그렇게 어려운가봅니다

 

 

먼저 관심 가져주셔 감사하고요^^;
6733--> 6799로 그것만 바꾸고 싶다는뜻입니다

고깃집top68858867330104A123,감사@500입니다
=============>
고깃집top68858867990104A123,감사@500입니다

이렇게 바꾸고싶다는 말입니다

참고로 99만 분리하는건 밑에와같이 하면됬는데
$cnt = preg_match('/8867([\d]{2})/isx', $str, $out);

echo $out[1];

33을 99로 바꾸는게 왜 안되는지 모르겠네요

이런 것은 정규식도 필요 없습니다

$su = str_replace("6733","6799", $str );
----------------------
위 정규식은 패턴의 문자열을 99로 바꾼다 입니다
즉 6712, 6722,6700 등 67 및 뒤의 숫자2자리까지를 몽땅 99으로 치환하라 입니다
그러니 당연히 6712, 6733 등은 ==> 99 로 됩니다

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 220
© SIRSOFT
현재 페이지 제일 처음으로