2012-08-28 76 views
0

用下面的字符串:定製SUBSTR PHP

$string='some text <photo id="id#" /> some text'; 

做一個SUBSTR,如果其字符串的結尾是

<photo id="id#" /> 

部分再申請額外的塊來完成

"<photo id="id#" />" 

示例:

substr($string,0,15); 

結果是:

some text <phot 

如果這種情況發生,我需要直到結束:

some text <photo id="id#" /> 

他,也找不到這樣的方式。順便說一句,id#是一個隨機數值,其長度不會超過3個字符。如果正則表達式有必要提供一個函數。

+1

你有沒有考慮一個DOM解析器? – Brad

+0

你需要照顧的標籤只是照片或你必須關心不同的標籤? – Eineki

+1

請不要使用正則表達式解析HTML,因爲它會[驅動你的į̷̷͚̤̤̖̦͍͗̒̈̅̄n̨͖͓̹͍͎͔͈̝͐ͪ͛̄͛ṣ̷̵̞̦ͤ̅̉̋ͪ͑͛ͥ͜a̷̘͖̮͔͎͛̇̏̒͆̆͘n͇͔̤̼͙̩͖̭ͤ͋̉͌͟eͥ͒͆ͧͨ̽͞҉̹͍̳̻͢](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 )。改爲使用[HTML解析器](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。 –

回答

2

看到這個: -

輸出: -

enter image description here

<?php 

$str= 'some text <photo id="#xx"/> some test'; 
$parts = preg_split('~(</?[\w][^>]*>)~', $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); 
echo '<pre>'; 
print_r($parts); 
echo htmlentities($parts[1]); 


$str_new= 'some text <photo id="#xx"></photo> some test'; 
$parts_new = preg_split('~(</?[\w][^>]*>)~', $str_new, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); 
echo '<pre>'; 
print_r($parts_new); 
echo htmlentities($parts_new[1]); 
echo htmlentities($parts_new[2]); 

?> 
0

無需使用正則表達式,只需使用PHP字符串函數:

$string = 'some text <photo id="id#" /> some text'; 
$newString = substr($string, 0, strpos($string, '>') + 1);