Jump to content
php.lv forumi

Skripts, kas paartrauc tekstu, lai paraadiitu sludinaajumu


Bunkertor 7

Recommended Posts

Sveiki!

 

Reku aizkeeros atkal aiz viena sava garadarba. Saakumaa ideja bija vienkaarsha - paraadiit tikai teksta pirmo teikumu. Veelaak sagribeejaas pameeginaat, vai var tekstu sagriezt gabalos un starp tiem gabaliem likt kaut ko no citas operas - sludinajumu, bildes utt.

 

<?php
$parts="Blah blah blah blah. Doh doh doh doh.";  //viss teksts - originaalaa tas protams buus izsaukums no db
$firstpart = substr($parts, 0, 14); //teksta dalja pirms paartraukuma
$secondpart = substr($parts, 14, 30); //otraa teksta dalja
$endchar = substr($parts, 14, 14); //peedeejais charakters, ko izvest pirmajaa daljaa
if ($endchar !="."){ //ja peedeejais charakters nav punkc
while($endchar !="."){ //kameer neesam tikushi liidz punktam, tekstu paartraukt nevajag
$i=1; //plusojam vienu charakteru klaat
$position=14+$i; //jaunais peedeejais charakters
$firstpart1 = substr($parts, 0, $position); //izlabotaa pirmaa dalja, kas nu beidzas ar punktu
}
}
echo $firstpart1; //izvedam pirmo teksta dalju uz ekraana
echo "<br><b>advertisement comes here</b><br>"; //sludinaajuma kods naaks te
$secondpart = substr($parts, $position, 30); //otraa tekta dalja - viss, kas palicis aiz pirmaas daljas peedeejaa charaktera
echo $secondpart; //teksta nobeigums
?>

 

rezultaataa nekas nesanaak - balta laba. :(

Buusu pateiciigs par ieteikumiem un konstruktiivu kritiku!

Link to comment
Share on other sites

Īpaši negribas iedziļināties, bet jēdzīgāk nebūtu vienkārši kaut kā šādi ?

Paldies par ieteikumu. Es it kaa domu uzkjeru, bet taa kaa tas skripts Tev ir tagad uzrakstits, vinsh vienkaarshi novaaktu tekstaa visus punktus un sabaaztu sludinaajumus katra punkta vietaa. Bez tam, ja es vinju tagad paarrakstiitu taa, lai vinsh punktu njem kaa delimiter, vinsh jau spridzinaas to tekstu pa punktiem. Un ko tad, ja man tanii tekstaa ir piemeeram 30 teikumi. Taapeec es kaut kaa meeginu, lai katraa tekstaa tas sludinaajums atrastos vienaa un tajaa pashaa vietaa - piemeeram peec piektaa teikuma - taa ap 700-to charakteri.

Edited by Bunkertor 7
Link to comment
Share on other sites

Es taisītu tad kaut kā tā. Mazliet pārveidojot andrisp kodu:

<?php
$charCount = 300;
$block = 1;
$bannerChars = 0;
$text = "Blah blah blah blah. Doh doh doh doh.";
$parts = explode('.', $text);
$newText = '';

foreach($parts as $part) {
 $newText.= !$newText ? trim($part) : '. '.trim($part);
 if(strlen($newText)>$block*$charCount+$bannerChars){
$newText.=$sludinajums[$block];
$bannerChars+= strlen($sludinajums[$block]);
$block++;
 }
}
echo $newText;
?>

Link to comment
Share on other sites

Bunkertor 7 --> tev ir vismaz 2 ljoti rupjas kljuudas

 

1.

while($endchar !=".") nekad neizpildiisies --> muuziigais cikls

jo nav noraadiits kur ciklaa mainaas $endchar ....

 

2. arii ljoti buutiska :

$endchar = substr($parts, 14, 14); //peedeejais charakters, ko izvest pirmajaa daljaa

nekad !!!!! nebuus vienaada ar (.) ......

Jo:

string substr ( string string, int start [, int length] ) !!!!

----

at taa visumaa doma ir diezgan pareiza .....

P.S. Un luudzu ja liec kodu neliec taadu blakji --> tam domaatas atstarpes un atkapes.....

Link to comment
Share on other sites

andrisp, xPtv45z, Grey_Wolf - paldies. Taa teikt "naglai uz galvas"!

 

string substr ( string string, int start [, int length] ) !!!!

njaa, taisniiba - es nez kaada dulluma peec nebiju piefikseejis, ka tas otrs cipars ir length :D Nu labi, bet piemeeram, ja es uztaisu $endchar($parts, 14, 1); tas taa vai taa neko nemaina.

jo nav noraadiits kur ciklaa mainaas $endchar ....

te es tieshaam esmu mazliet saputrojies. Taga es redzu, ka Tev taisniiba - tas WHILE nenobeidzaas ne ar kaadu darbiibu, vnk. iet uz rinki un neko nedara. Es pareizi sapratu? Vai es to kaut kaa vareetu atrisinaat ar ENDWHILE? Atvainojos par dumiem jautaajumiem!

Link to comment
Share on other sites

nu jaa ... ieliec lai to simbolu, lai lasa ciklaa un parbauda kamer ir (.) ...

un njem vinju tomer kaa 1 (vienu simbolu) nevis 14 ;)

 

ok. es te tagad it kaa treneejos. Meeginaaju novienkaarshot, bet sanaak no seerijas "es te uzrakstiiju skriptinju, paliidziet saprast, ko vinsh dara"

outputaa man sanaak

"juhuu

."

Kapee vinsh to juhuu liek outputaa, ja endchar nav punkts.

Sorry... es tikko vienu manuaali izbokstereeju, bet nu pagaidaam laikam labumaa neiet. Kaut kaads beernudaarzs!

 

<?php
$parts="Blah blah blah blah. Doh doh doh doh."; 
$endchar = substr($parts, 12, 1);

if ($endchar=".")
echo "juhuu";
  else 
 do
	{
	$position=12;
	$i=1;
	$endchar = substr($parts, ($position+$i), 1);
	}
  while ($endchar !=".");
echo "<br>";
echo $endchar;
?>

Link to comment
Share on other sites

ka es sapratu tu meklē pēdējo punktu sava teksta

Genijs, dmitriy! Tas bija tieshi tas, ko vajag. Patiesiibaa gan izveeleejos STRPOS, sanaak iisaaks kods.

<?php
$parts="Blah blah blah blah. Doh doh doh doh. Doh doh doh doh. Doh doh doh doh. Doh doh doh doh. Doh doh doh doh. Doh doh doh doh. Doh doh doh doh. Doh doh doh doh. Doh doh doh doh. Doh doh doh doh.";

$fullstop = strpos($parts,".",82);
$divider = $fullstop+1;
$firstpart = substr($parts, 0, $divider);
$secondpart = substr($parts, $divider, 300);

echo $firstpart;
echo "<br>";
echo "<b>Advertisement</b>";
echo "<br>";
echo $secondpart;
?>

Reku! Tagad viss darbojas, paldies!

šī nav salīdzināšana.

:( Man laikam iisti nepieleca. Njaa, tas noteikti velk uz veel viena manuaalja lasiishanu :)

Buus jaameegina tikt ar to veco kodu arii galaa, tomeer interesanti...

Link to comment
Share on other sites

×
×
  • Create New...