2017-03-20 1 views
0

저는 (는) 새로운 PHP 언어입니다.regex duplicate spintax

PHP를 사용하여 기사 회 전자를 만들고 싶습니다.

문자열 처리 전에 spintax 함수를 사용하기 전에 일부 텍스트를 동의어로 바꾸기를 원합니다.

예컨대 :

$text = "Mother fry a turkey in the cooking room accompanied by a father who makes drinks and mother really happy."; 

결과 :

$newstring = "{mother|mama} {fry|cook} {a turkey|the chicken} in the {the cooking room|kitchen} {accompanied by|with} {father|papa} who {makes|prepare} {coffee|drinks} and {mother|mama} really {happy|fun}."; 

내가 MySQL 데이터베이스를 사용하지만 TXT 파일을 사용 만 동의어를 얻기 위해 fopen을 사용하지 않는.

하지만 결과는 아주 나쁜,

EG는 :

$newstring = "{mother|mama} {fry|cook} {a turkey|the chicken} in the {the cooking room|kitchen} {accompanied by|with} {father|papa} who {makes|prepare} {coffee|drinks} and {{mother|mama}|mama} really {happy|fun}."; 

이 같은 정규식 패턴을 사용 : 그 같은 중복 교체를 방지하기 위해 사용한다 무엇 정규식 패턴

$text = preg_replace("/\b$search\b/sui", $replace, $text); 

?

아무도 도와 줄 수 있습니까?

나쁜 영어로 죄송합니다.

감사합니다.

$text = "Father roasts mother in the cooking room accompanied by a turkey who makes drinks and the turkey is really happy."; 

당신은 연관 배열을 필요로하고 preg_replace_callback를 사용하여 목록에서 각 단어 일치 하나의 패스에 그들 모두를 대체 할 교대를 구축 :

+0

나쁜 영어는 용서받을 수 없으며, 잘못된 포맷은 아닙니다! 올바른 형식을 포함하도록 질문을 편집하십시오. 편집 방법에 대한 확신이 없으면 편집 도움말 링크가 있습니다. – miken32

+0

죄송합니다 무슨 뜻인지 이해가 안 돼요 ... –

+0

Google 번역은 당신의 친구이지만 "formting"을 formating하지 않습니다 :-). "edit"(질문 태그 아래)를 클릭하면 편집기를 사용하여 텍스트를 "포맷"할 수 있습니다. 예를 들어 편집기의 코드 마크 업 버튼을 사용하여 코드 부분을 래핑 할 수 있습니다. –

답변

0

옛 생각 패턴에서 얻을 수 있습니다

u 수정자는 UTF-8로 인코딩 된 유니 코드 문자열로 문자열을 읽도록합니다 (문자열이 ASCII 범위를 벗어나는 문자를 사용하는 경우 유용합니다). 정규식 엔진이 교대로 성공한 최초의 지점을 반환 이후 역순으로 단어의 배열을 정렬하는 것이 중요하다는 것을

demo

참고.