Skip to content

Instantly share code, notes, and snippets.

@yitsushi
Created June 19, 2014 10:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yitsushi/7f673d16c4e4e29b5de9 to your computer and use it in GitHub Desktop.
Save yitsushi/7f673d16c4e4e29b5de9 to your computer and use it in GitHub Desktop.
<?php
function wsplitAlt($value, $limit)
{
$limited = substr($value, 0, $limit);
$nextSpaceValue = substr($value, 0, strpos($value, ' ', strrpos($limited, ' ') + 1));
if ($limited === $nextSpaceValue) {
return $limited;
}
return substr($limited, 0, strrpos($limited, ' '));
}
@yitsushi
Copy link
Author

Ez a megoldás abban másabb igazán, hogy nem függ a futási idő a szöveg hosszától. Mivel az a cikk a Reguláris kifejezésekről szól, így már nem akartam utólag belerakni ezt, így inkább csak ide rakom érdekességnek. Ez tulajdonképpen akármekkora szövegre fix idő alatt fut le. Lehet akár egy ASZF 1000+ sorral vagy egy rövidebb szonett ugyan annyi idő lesz a futás.

@yitsushi
Copy link
Author

Persze még bele lehet pakolni, hogy a szó végén lévő vesszőket pl törölje le, de ekkor már csak maximum limit hosszű szövegen kell dolgoztatni.

@vegvari
Copy link

vegvari commented Jun 20, 2014

Ha nincs space, akkor empty string-el ter vissza:

wsplitAlt('asdf', 200); => string '' (length=0)

@tujlaky
Copy link

tujlaky commented Dec 19, 2014

mb_substr és mb_strrpos jobb lenne, ha magyar oldal is használja, mert substr az ékezetes betűket rosszul számolja (bár valószínűleg a dolog már nem túl aktuális 😄 )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment