Autor
|
Tema: Duda: Crear una pila contando palabras encontradas en un string (Leído 2,478 veces)
|
Darkkz
Desconectado
Mensajes: 2
|
Hola, he utilizado el buscador y no he encontrado mi duda. Estoy tratando de hacer a mano una comprobación de tags de BBCode, que compruebe que las etiquetas abiertas de cada tipo estén luego cerradas. He intentado utilizar tanto eregi() como preg_match(), pero no consigo utilizarlas correctamente. Según he oído eregi() está deprecated. Sería algo así: function str_postea($cadena1,$cadena2,$texto) { $contador=0; $contador++; $contador--; while($contador>0) { $texto = $texto.$cadena2; $contador--; } while($contador<0) { $contador++; } return $texto; }
$texto = str_postea("[b]","[/b]",$texto);
El problema es que los primeros while de la función son infinitos, pues si existe la cadena, existe siempre. ¿Alguna idea de cómo podría arreglarlo? Gracias.
|
|
|
En línea
|
|
|
|
madpitbull_99
|
Mira si esto te sirve, es el BBCode Parser que viene con el editor Markitup. <?php // ---------------------------------------------------------------------------- // markItUp! BBCode Parser // v 1.0.6 // Dual licensed under the MIT and GPL licenses. // ---------------------------------------------------------------------------- // Copyright (C) 2009 Jay Salvat // http://www.jaysalvat.com/ // http://markitup.jaysalvat.com/ // ---------------------------------------------------------------------------- // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // ---------------------------------------------------------------------------- // Thanks to Arialdo Martini, Mustafa Dindar for feedbacks. // ---------------------------------------------------------------------------- define ("EMOTICONS_DIR", Site ::get_url('habari') . "/user/plugins/markup/markitup/parsers/bbcode/images/"); function BBCode2Html($text) { // BBCode [code] function escape($s) { global $text; $code = $s[1]; return '<pre><code>'.$code.'</code></pre>'; } } // Smileys to find... ':D', ':o', ':p', ':(', ';)' ); // And replace them by... $out = array( '<img alt=":)" src="'.EMOTICONS_DIR .'emoticon-happy.png" />', '<img alt=":D" src="'.EMOTICONS_DIR.'emoticon-smile.png" />', '<img alt=":o" src="'.EMOTICONS_DIR.'emoticon-surprised.png" />', '<img alt=":p" src="'.EMOTICONS_DIR.'emoticon-tongue.png" />', '<img alt=":(" src="'.EMOTICONS_DIR.'emoticon-unhappy.png" />', '<img alt=";)" src="'.EMOTICONS_DIR.'emoticon-wink.png" />' ); // BBCode to find... $in = array( '/\[b\](.*?)\[\/b\]/ms', '/\[i\](.*?)\[\/i\]/ms', '/\[u\](.*?)\[\/u\]/ms', '/\[img\](.*?)\[\/img\]/ms', '/\[email\](.*?)\[\/email\]/ms', '/\[url\="?(.*?)"?\](.*?)\[\/url\]/ms', '/\[size\="?(.*?)"?\](.*?)\[\/size\]/ms', '/\[color\="?(.*?)"?\](.*?)\[\/color\]/ms', '/\[quote](.*?)\[\/quote\]/ms', '/\[list\=(.*?)\](.*?)\[\/list\]/ms', '/\[list\](.*?)\[\/list\]/ms', '/\[\*\]\s?(.*?)\n/ms' ); // And replace them by... $out = array( '<strong>\1</strong>', '<em>\1</em>', '<u>\1</u>', '<img src="\1" alt="\1" />', '<a href="mailto:\1">\1</a>', '<a href="\1">\2</a>', '<span style="font-size:\1%">\2</span>', '<span style="color:\1">\2</span>', '<blockquote>\1</blockquote>', '<ol start="\1">\2</ol>', '<ul>\1</ul>', '<li>\1</li>' ); // paragraphs $text = "<p>".preg_replace("/(\n){2,}/", "</p><p>", $text)."</p>"; // clean some tags to remain strict // not very elegant, but it works. No time to do better ;) function removeBr($s) { } } $text = preg_replace('/<p><pre>(.*?)<\/pre><\/p>/ms', "<pre>\\1</pre>", $text); $text = preg_replace('/<p><ul>(.*?)<\/ul><\/p>/ms', "<ul>\\1</ul>", $text); return $text; } ?>
[/code]
|
|
|
En línea
|
|
|
|
Darkkz
Desconectado
Mensajes: 2
|
Mira si esto te sirve, es el BBCode Parser que viene con el editor Markitup. <?php // BBCode to find... $in = array( '/\[b\](.*?)\[\/b\]/ms', '/\[i\](.*?)\[\/i\]/ms', '/\[u\](.*?)\[\/u\]/ms', '/\[img\](.*?)\[\/img\]/ms', '/\[email\](.*?)\[\/email\]/ms', '/\[url\="?(.*?)"?\](.*?)\[\/url\]/ms', '/\[size\="?(.*?)"?\](.*?)\[\/size\]/ms', '/\[color\="?(.*?)"?\](.*?)\[\/color\]/ms', '/\[quote](.*?)\[\/quote\]/ms', '/\[list\=(.*?)\](.*?)\[\/list\]/ms', '/\[list\](.*?)\[\/list\]/ms', '/\[\*\]\s?(.*?)\n/ms' ); // And replace them by... $out = array( '<strong>\1</strong>', '<em>\1</em>', '<u>\1</u>', '<img src="\1" alt="\1" />', '<a href="mailto:\1">\1</a>', '<a href="\1">\2</a>', '<span style="font-size:\1%">\2</span>', '<span style="color:\1">\2</span>', '<blockquote>\1</blockquote>', '<ol start="\1">\2</ol>', '<ul>\1</ul>', '<li>\1</li>' ); ?>
Con este sistema no tengo que hacer el follón del contador. Es más simple de lo que pensaba Resuelto, ¡Muchas gracias!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda acerca de la pila en VB
Programación Visual Basic
|
Krnl64
|
4
|
2,044
|
21 Julio 2006, 13:38 pm
por Krnl64
|
|
|
[DUDA] mover a la pila
ASM
|
blackray
|
4
|
3,868
|
10 Septiembre 2009, 03:07 am
por blackray
|
|
|
¿Extraer palabras de un string?
.NET (C#, VB.NET, ASP)
|
dont'Exist
|
3
|
4,586
|
17 Marzo 2012, 14:32 pm
por dont'Exist
|
|
|
Ayuda con varias palabras en un string
Programación C/C++
|
kur79
|
6
|
2,644
|
11 Septiembre 2015, 11:16 am
por ivancea96
|
|
|
[C++] (Consulta) ¿std::string guarda la cadena en el heap o en la pila?
Programación C/C++
|
class_OpenGL
|
7
|
3,078
|
10 Agosto 2016, 17:10 pm
por class_OpenGL
|
|