2011-02-24 6 views
0

이 preg_match 스크립트에 대한 도움이 필요합니다. 나는 bbcode 안에있는 텍스트를 갖고 싶다. 문자열은 다음과 같습니다. [caption id="attachment_123" align="alignleft" width="100" caption="This is the text that I want"]bbcode 안에 텍스트를 넣으려면 어떻게해야합니까?

어떻게 하시겠습니까? 중요한 것은 id와 align 같은 값은 항상 같지 않다는 것입니다. 같은 것을 시도했습니다 preg_match('#\[caption(?:.*?)caption=\"(.*?)\"\]#s',$result,$array);

도움 주셔서 감사합니다! phpheini

답변

0

나의 제안 :

<[]를 교체하고 > 다음 SimpleXML 및 생성 된 객체의 속성으로 액세스 caption를 사용하여 XML 객체에 해당 문자열을 변환합니다.

$input = '[caption id="attachment_123" align="alignleft" width="100" caption="This is the text that I want"]'; 
$input = str_replace(array('[', ']'), array('<', '>'), $input); 

$object = new SimpleXML($input); 

echo $object->caption; 

깨끗하고 쉽습니다. RegexpHTML/BBCode은 고통 스럽습니다.

+0

내가 틀리지 않으면 캡션 요소 사이에 텍스트가 표시됩니다. 하지만 그건 내가 원하는 것이 아닙니다. – phpheini

+0

나는 그것이 적절한 해결책이 될 것이라고 생각하지 않습니다. '[script src = "http://attacker-site.com/attack.js"] [/ script]'할 일만 생각하면됩니다. – metrobalderas

+0

다른 방법이 있습니까, 아니면 내 스크립트의 문제점을 알고 있습니까? 나는 그것이 왜 작동하지 않는지 모르겠다. – phpheini