PHP ile uzun bir dize bölmek nasıl?

4 Cevap

Şu anda HTML özelliklerini içerebilir çok uzun bir dize çatlıyor içine arıyorum.

Örnek sonra:

Thiiiissssaaaveryyyylonnngggstringgg

Bunun için ben geçmişte bu işlevi kullanmış:

function split($sString, $iCount = 75)
{       
    $text = $sString;
	$new_text = '';
	$text_1 = explode('>',$text);
	$sizeof = sizeof($text_1);
	for ($i=0; $i<$sizeof; ++$i) {
        $text_2 = explode('<',$text_1[$i]);
    	if (!empty($text_2[0])) {

    			$new_text .= preg_replace('#([^\n\r .]{'. $iCount .'})#iu', '\\1  ', $text_2[0]);
    	}
    	if (!empty($text_2[1])) {
        	$new_text .= '<' . $text_2[1] . '>';
    	}
	}
	return $new_text; }

Fonksiyonu gibi karakterler pick up ve X karakterden sonra bunları bölmek için çalışır. HTML veya ASCII karakterleri böyle orada karışık olduğunda sorun:

Thissssiisss<a href="#">lonnnggg</a>sting&#228;&#228;&#228;

Bu yukarıda dize bölmek ve HTML etiketleri içindeki karakterleri sayılmaz ve 1 gibi her ASCII karakter saymak için nasıl anlamaya çalışıyorlar.

Herhangi bir yardım büyük olurdu.

Teşekkür ederim

4 Cevap

Yerine yerleşik wordwrap() kullanarak düşünün?

I this FireStats dizeleri bölmek işlevini kullanabilirsiniz.

muhtemelen bağlam dışına almak ve oldukça kolay kullanabilirsiniz. Diğer bazı fonksiyonlar arıyor unutmayın. İsterseniz utf8 çeki atlayabilirsiniz.

Bu karmaşıklık kurtulmak, düz metin ayıklamak için bir DOM parser kullanın

//Dump contents (without tags) from HTML
$pageText = file_get_html('http://www.google.com/')->plaintext;
echo "Length is: " . strlen($pageText);