2011-08-26 2 views
0

문자열에이 태그가있는 경우 다음과 같이 말하십시오.
[phpbay]{keyword}, 30, "", "", "", "", "", "", "", "", "", "", "", "", "2", "", "", ""[/phpbay]
태그와 태그 사이의 내용을 제거 할 수 있습니까? 어쩌면 정규식을 사용하고 있을까요? 감사!PHP에서 사용자 정의 태그와 컨텐츠를 제거하는 방법은 무엇입니까?

+0

어느 부분을 얻으려고하십니까? –

+0

'str_replace ($ string, ", $ string);'? – Bojangles

+0

예, 정규식을 사용하여 제거 할 수 있습니다. :) – Kelly

답변

1
preg_replace('~\[phpbay\](.+?)\[/phpbay\]~','',$string); 
1

예, 정규식 여기 가능한 수 있습니다 : 그것은 당신의 예에서와 같이 그러한 문자가 포함 된 경우

$str = preg_replace('#\[phpbay][{\w},\s\d"]+\[/phpbay]#', "", $str); 

이것은 단지 문자열에서 "태그"를 제거합니다. 예를 들어 포함하고있는 경우에만 제거하고 싶으면 예 : 30 또는 특정 {keyword}을 사용하면 정규식을보다 구체적으로 만들어야합니다.

도울 수있는 도구는 https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world을 참조하십시오.

+0

정말 여기에 맞는 생각이 아닌 것 같습니다. 끝점 사이의 특정 문자를 찾는 것만으로 잘못된 것처럼 보이며 잘못된 끝점도 있습니다. – tchrist

1
$string = "[phpbay]blah blah blah [/phpbay]"; 
$stripped_string = preg_replace('~\[\/?phpbay\]~', '', $string); 

내가 질문을 오른쪽으로 읽기, 단지 "어쩌구 저쩌구"부분은 유지하려는거야합니다.

1

이 정규식은 두 태그 사이에 모든 것을 줄 것이다 :

\[phpbay](.+)\[/phpbay] 
+0

그러면 첫 번째''[phpbay]''부터 ** ** **'[/ phpbay]'까지 모든 것이 제거 될 것입니다. 그게 틀렸어. – tchrist

+0

@tchrist :'preg_replace'와 함께 사용하는 경우. 그래도 캡쳐 된 그룹과 일치하면 ... –

-1

나는 개인적으로 않는 str_replace 또는 str_ireplace (대소 문자 구분)

시도 및 테스트
$Find = array("[phpbay]","[/phpbay]"); 
$Replace = array("<b>","</b>"); 
$Source = "[phpbay]Hello World[/phpbay]"; 


//Couldn't get any simpler...Replace [phpbay]Content[/phpbay] with <b>Content</b> 

echo str_ireplace($Find,$Replace,$Source); 

, 작동을 사용합니다.

희망이 도움이됩니다.

+0

질문하기 바랍니다. – RiaD

관련 문제