Extension talk:Replace Text/Archive 2018

Regex (big wish)
Please add regular expressions. That would help to maintain templates.--Jannis 11:27, 11 January 2010 (UTC)
 * I also think that would be the next logical step :) Maybe a good preview (before / after) of the unparsed text would be needed here. --Subfader 18:31, 16 January 2010 (UTC)
 * Yes, that would be lovely. --SomaticJourney 19:30, 13 March 2010 (UTC)
 * Probably unlikely to happen, as SQL (the database language used) doesn't support RegExs. But even having simple wildcards (which SQL does support) would be a big plus! 75.119.241.73 13:45, 6 August 2010 (UTC)
 * At least simple wildcards would be so usefull. whith this you can also use this extension as a powerfull anti-spam tool besides its other usefullness --213.196.170.72 15:33, 3 December 2010 (UTC)

Search apparently not working after doing first set of replacements
I just did a search to replace " " with "  " within a specific namespace. It replaced that text just fine on about 90 pages within that namespace.

I then wanted to do a similar replace in the same namespace, like this: " " to "  ". However, the search isn't finding the pages in that same namespace saying that no pages were found. My job to replace Template1 seems to have finished about a half hour ago, so I don't think there is any conflicting going on. Also, we have a development instance of our site, and when I try the same search on that site it does pick up all the Template2 instances. Any idea what might be happening? Thanks! --Gkullberg 18:38, 26 January 2010 (UTC)


 * Hard to tell from here, if not impossible ;) --Subfader 20:38, 26 January 2010 (UTC)


 * Agreed. Yet is there anything you can point me to on the server that I could look at, like processes, error / task logs, or anything where I could troubleshoot myself? --Gkullberg 21:13, 26 January 2010 (UTC)


 * Did you try the whole thing again for Template2? If still nothing happened the Template1 case doesn't matter much here and we have the case that you searched term wasn't found at all. I can tell you what I would to. I would check if Template2 is called anywhere at all directly and in which namespace; therefor I would
 * go to Template:Template2 and see "what links here", if nothing was found
 * i'd search it using this extension: replace "Template2" (without quotes and – " with nothing or a temp string, just to see what it finds.If nothing was found I dunno lol.
 * If it was found I would check if it really is only used as or if aparameter are used, e.g.  . You may have tested all this, but I can't think of more.
 * If something was found but nothing happens it's useful to run maintenance/runJobs.php --Subfader 01:41, 27 January 2010 (UTC)
 * What does runJobs.php do in respect to Replace Text? I'm still seeing funny behavior in that namespace from before.  Ever since I did that original find/replace on that namespace it no longer finds anything I search for  It works for other namespaces just fine, but not the one problem namespace.  If I do a standard Wiki search in that namespace it finds the text I'm looking for, but not when I do a find from the Replace Text extension.  Any ideas what might be causing this? --Gkullberg 17:02, 16 March 2010 (UTC)


 * I can confirm this behavior. Strings are found after the first replacement and are said to be replaced, but aren't in fact. --Nakohdo 07:43, 15 April 2010 (UTC)
 * I got the impression that the replacements indeed take place, but aren't immediately reflected in the (special) pages. I renamed a category and one hour ago there were only 4 pages in the new category on the categories special page now there are 27 ... Might be connected with cron runs and/or caching. Reloading that page shifts those numbers even as I write this. --Nakohdo 08:52, 15 April 2010 (UTC)

Redirects still getting created
I did a find & replace for a bunch of page names which got moved to new names. I unchecked "Save the old titles as redirects to the new titles", yet redirects still got created. I was hoping that redirects didn't get created. Is that the intended outcome? --Gkullberg 21:12, 26 January 2010 (UTC)


 * No it's not. I have problems with my job queue atm so I can't confirm but it looks like this is indeed a bug. --Subfader 03:45, 27 January 2010 (UTC)


 * Ah, what do you know, it's really a bug. Well, not exactly a bug, but an issue involving the somewhat-new MediaWiki 'suppressredirect' permission. I added a note about this to the "Known issues" section. Yaron Koren 04:49, 27 January 2010 (UTC)

Fieldset legends
I suggest to use legends for the fieldsets in SpecialReplaceText.php: Change $wgOut->addHTML( " \n $search_label$tables\n " ); to $wgOut->addHTML( " \n $search_label \n$tables\n " ); Same for the second fieldset and $optional_filters_label. --Subfader 17:31, 14 March 2010 (UTC)

Useless query
IMO the info  is quite useless. On wikis with more than 10,000 articles this query (which is a deep query, not just a mysql search) takes a lot of time and wastes the user's time and the server's ressources.

I decided to make that optional. If $wgReplaceTextSkipInfo is set to true in LocalSettings.php the info is skipped and the form jumps directly to the preview. All other checks and warnings still fully work. Add $wgReplaceTextSkipInfo to the globals of function doSpecialReplaceText and replace if ( $this->replacement === '' ) { $message = 'replacetext_blankwarning'; } elseif ( $this->edit_pages ) { $res = $this->doSearchQuery( $this->replacement, $this->selected_namespaces, $this->category, $this->prefix ); $count = $res->numRows; if ( $count > 0 ) { $message = array( 'replacetext_warning', $wgLang->formatNum( $count ), " {$this->replacement} " ); }				} elseif ( $this->move_pages ) { $res = $this->getMatchingTitles( $this->replacement, $this->selected_namespaces, $this->category, $this->prefix ); $count = $res->numRows; if ( $count > 0 ) { $message = array( 'replacetext_warning', $wgLang->formatNum( $count ), $this->replacement ); }				} with if ( $this->replacement === '' ) { $message = 'replacetext_blankwarning'; } 			elseif ($wgReplaceTextSkipInfo != 'true') { if ( $this->edit_pages ) { $res = $this->doSearchQuery( $this->replacement, $this->selected_namespaces, $this->category, $this->prefix ); $count = $res->numRows; if ( $count > 0 ) { $message = array( 'replacetext_warning', $wgLang->formatNum( $count ), " {$this->replacement} " ); }				} elseif ( $this->move_pages ) { $res = $this->getMatchingTitles( $this->replacement, $this->selected_namespaces, $this->category, $this->prefix ); $count = $res->numRows; if ( $count > 0 ) { $message = array( 'replacetext_warning', $wgLang->formatNum( $count ), $this->replacement ); }				}			} The code may look ugly though. IMO the default behaviour should be changed so after installation the info can be enabled if really needed. --Subfader 17:56, 14 March 2010 (UTC)


 * Hi, out of curiosity: how many string replacements do you run, that eliminating this step makes a difference? I guess a similar question could be asked for the issue below as well. Yaron Koren 16:55, 15 March 2010 (UTC)


 * 1 to 5 per day, sometimes a real session with up to 50 strings from my standard list (see archive for my automation request). I really think it's useless. You'd also find it useless if google would first show a page reading "Found 8 million results. Click here to see the search results." :D As mentioned it's not only useless but wastes time and ressources. If you have to run a replacement on a complete namespace or more without category or prefix filter on a big wiki it takes 5-10 seconds to build the info and the same AGAIN to build the preview.
 * I even think of removing all error messages (like empty replacements string warning) to the top of the preview (properly highlighted) so you never see the info page and always land directly on the preview page. --Subfader 02:17, 16 March 2010 (UTC)


 * Yeah, what you're saying makes a lot of sense... I guess that page has been extraneous ever since users could specify exactly which pages they wanted to do replacement on (i.e., since version 0.2 :) ). I still think it's nice to tell people how many pages contain the replacement string already (or, even more importantly, warn about replacing with a blank string); but, as you note, those could be put at the top of the actual replacement page. Yaron Koren 04:36, 16 March 2010 (UTC)


 * Well, I kept the query, but in the new version, 0.8, the warning now shows up at the top of the second screen, instead of in a separate "confirmation" screen. Thanks for the idea. Yaron Koren 22:04, 18 March 2010 (UTC)


 * errorbox is fine for that. If you want a little more usability, replace tt with code tags ;) --Subfader 00:10, 19 March 2010 (UTC)

Quick links to (un)tick namespace
This adds quick links to easily (un)tick defined groups of namespaces:



Here's the code. The javascript code is ugly but I couldn't care less since Special:ReplaceText is private and it works for me. --Subfader 19:18, 14 March 2010 (UTC)


 * Interesting; thanks for the idea, and the code. Are you aware of the new 'Vector' skin, in MediaWiki 1.16? It has its own interface for searching by specific sets of namespaces - it's a similar concept to yours, but with different group names. I would think it makes sense to use their set of namespaces, for consistency - any thoughts? Yaron Koren 20:56, 14 March 2010 (UTC)


 * You mean on Special:Search? Yes I switched to 1.16alpha right after it was released in August just to use that feature for the search :) Thoughts: The grouping is ok on the Search. The ones I used here are my own preference. I realized I always needed the same namespaced ticked again and again.
 * Somebody should create a useful master namespace selector which then should be used on all pages like special pages and it could be easily used by extensions like this. My 2 cents about namespace usabilty. The only improvemnt recently was grouping the talk namesapces after all these years, that's very poor imo. --Subfader 00:35, 15 March 2010 (UTC)


 * Okay - well, my instinct is to always try to fit in with how MediaWiki does it. What do you mean by "the only improvement recently" - what about the other namespace groupings? Yaron Koren 02:15, 15 March 2010 (UTC)


 * I mean the only improvement about a more useful way to select namespaces (except the new grouping for the search). There only is the fieldset or the drop down variation. Btw, I don't expect you to include this to the extension, I just wanted to post it, cos I can imagine other people who often replace text may find this useful. Better check my 2 posts above :) --Subfader 02:39, 15 March 2010 (UTC)


 * Okay, I think I get it. Thanks also for the advice :) - I missed those other two posts entirely. Yaron Koren 02:43, 15 March 2010 (UTC)


 * I modified the interface in version 0.8 to look more like the "Special:Search" page in MW 1.16, and to include its "check all" and "check none" buttons if MW is at version 1.16 or greater - hopefully this is a step in the right direction. Yaron Koren 22:17, 18 March 2010 (UTC)


 * Yeah let's go for more usability. Everything that doesn't annoy me on a daily basis is cool :) --Subfader 00:06, 19 March 2010 (UTC)

Apostrophe bug again?
Currently text like this is not found at all or only randomly:. Can you confirm? --Subfader 13:55, 1 May 2010 (UTC)


 * Could be a problem with a recent $wgCompressRevisions problem tho. --Subfader 23:48, 1 May 2010 (UTC)

Losing discussion after moving
If you replace text in titles (page moves) and do not tick the corresponding talk NS, you will lose all discussions since the page has a different title then. What can be done about it? E.g. if NS_MAIN and replace titles then also in NS_TALK titles. Trying some javascript for the form now. --Subfader 23:00, 2 May 2010 (UTC)


 * That's true; but can't you just run the replace again, this time on those talk namespaces? Yaron Koren 02:09, 4 May 2010 (UTC)


 * Yep, but to do so you have to realize the accident happened :) --Subfader 02:54, 4 May 2010 (UTC)


 * Hm, that's true... a little Javascript "OK / Cancel" alert could be a good idea. Yaron Koren 19:19, 4 May 2010 (UTC)


 * Yep. I'm not able to write a proper solution that would do that per php for all namespaces including custom ones. --Subfader 18:51, 5 May 2010 (UTC)

Input Boxes - Number of lines
The input boxes on the specialpage are offering 3 lines for the target and the replacment text. This isn't that much. My quick solution on http://www.mobadaten.info: I changed 2 lines in the function showForm (file SpecialReplaceText.php):

It would help, if one can set up both height and width in LocalSettings.php after the 'require_once' line. Without a special configuration in LocalSettings.php the width of 50 and the height of 2 may work as default values.

…and please don't worry about my possibly funny english - I'm out of practice… :-) --Wgkderdicke 16:49, 21 May 2010 (UTC)

Regular Expressions
One the goals I had installing Replace Text was to replace parameters of templates or to remove templates in their entirety that appear on a lot of pages. This could be easily accommodated with regular expressions (see xkcd) where I could specific a beginning string "". I spoke with Yaron and he pointed out the complications arising from a lack of regular expression support in SQL (shame on you, whoever you are, who didn't make regular expressions a part of SQL!). But since template manipulation is a common requirement of this extension, and since templates are the building blocks of any sophisticate wiki, I hope someone can come by and incorporate this functionality.
 * MySQL actually has a REGEXP operator, so this is entirely possible (with the condition that only specific MySQL versions will be supported). And, agreed, regexp search and replace would be awesome. --The CyberShadow 22:12, 3 October 2010 (UTC)

Missing Checkbox
Hi Folks, just install the new version (0.8) of this great plugin on my MediaWiki Installation 1.15.4 in german. It works just fine, the only thing that is different from the screenshot on the description page is that I don't have a "Check all" or "Uncheck all" button. Is that normal or did screw up something ? THY a lot,--Brocchinia 14:34, 23 July 2010 (UTC)


 * Hi - yes, that's normal; those checkboxes only show up when using the Vector skin, which is only available in MediaWiki 1.16+. I just added a note to the page to explain that. Yaron Koren 15:05, 23 July 2010 (UTC)

How to access Replace Text?
Once it is installed, how do I get to the page? I.e. As a normal user, how do I tell if it is already installed on a wiki I am using? Daviddoria 12:04, 13 August 2010 (UTC)


 * It's the page "Special:ReplaceText". Yaron Koren 16:55, 13 August 2010 (UTC)

No way to finish replacement process : Summary window doesn't have a confimation button
Hi, when i do a continue on the page list replacement page, i see another page with the page count that will be impacted by the replacement, a link "Return to form" and that's all... no link seems to be available to finish the replacement process.


 * That's strange - what versions of RT and MediaWiki are you using? Yaron Koren 18:21, 26 October 2010 (UTC)

Tip: running two (or more) jobs together
If you run one replace text job with this extension and then quickly after run another, it looks like the second will not be run. The first is shown in Recent changes but the second is not. Before trying it again, check out the job queue (under Statistics). It will probably include the second job. There appears to be a delay of several (15 - 30 or so) minutes before the second is started, even if the first is finished. --Robinson weijman 10:24, 20 January 2011 (UTC)

I needed this but it does not work
I have a database of about 3.6 million article or so. I needed to replace one reoccurring name in the articles but it runs for a while then it is just stuck on loading. I checked on WHM and I notice at first it uses a healthy amount of resources then it uses less and less and finally it just disappears all together. I have adjusted the jobs and everything with no such luck. Is this a fluke when dealing with large databases? Currently my entire database is pushing about 20 gigs.


 * I'm sure this is due to the very large size of your wiki. Did you try using the "Replace only in pages with the prefix" option? It could help to break the process down into manageable chunks, if you, for instance, did a separate call for each letter of the alphabet. Yaron Koren 16:12, 25 January 2011 (UTC)

Thanks gonna give it a try going through each letter of the alphabet beats going through the whole thing by hand :)

Call to undefined method Xml::textarea
Fatal error: Call to undefined method Xml::textarea in /var/www/wiki/extensions/ReplaceText/SpecialReplaceText.php on line 220

I just installed the latest extension. How do I resolve this error?


 * Hi - what version of MediaWiki are you using? My guess is that you have an old version, but I don't know exactly when Xml::textarea was added. Yaron Koren 16:27, 26 January 2011 (UTC)

I have version 1.12.0. Here is the link: http://wiki.accelereyes.com/wiki/index.php/Special:ReplaceText


 * Ah, okay. That version's not supported by Replace Text - you need 1.13 or higher. Yaron Koren 16:34, 26 January 2011 (UTC)

Many thanks

Case insensitive
Now that we got regex, would a case insensitive checkbox be possible (affecting also non-regex replacements)? --Subfader 17:04, 19 February 2011 (UTC)


 * I'm glad you saw the new regex feature, and that it's (apparently) working for you. As for case-insensitive searches: my understanding is that it's not possible, because the database field where MediaWiki stores the actual text, i.e. the "old_text" field in the "text" table, is of type "mediumblob", and any kind of blob field is always case-sensitive - see here. The MediaWiki search features lets you do case-insensitive searches, but that uses a different DB table, "searchindex", which does some processing on the text to make searches easier, like removing punctuation - which also makes it unusable for Replace Text. So unfortunately, I think the only solution would be to modify or add to the MediaWiki database in some way. Yaron Koren 22:36, 20 February 2011 (UTC)


 * Sounds like the effort would not be worth it. I only tested regex quickly on localhost and it worked, but didn't highlight the found sections in the preview. Also no replacement was done, but that could be cos of the localhost installation. --Subfader 16:19, 21 February 2011 (UTC)


 * Ah - so it didn't really work, then... I know the highlighting needs fixing - it only works some of the time. Yaron Koren 19:08, 21 February 2011 (UTC)

Bug in 0.9 / replacing text in page titles
Hi, I just tested the new version for another reason an realised that the extension proceeds to a blank page as soon as you would like to replace some text in page titles. This behaviour does not appear with 0.8.1. Cheers --&#91;&#91;kgh&#93;&#93; 12:26, 22 February 2011 (UTC)


 * Can you give any more information - the search string, the replacement string, use of regex, the number of pages? Yaron Koren 17:35, 22 February 2011 (UTC)


 * I apologize for my delayed answer. Somehow I did not get a notification. :( Sure I can provide additional information as I should have done in the first place anyway: I did not use regex. The search string was “[G131]” and the replacement string was G131. v0.8.1 tells me that there is no such title containing “[G131]” whilst v0.9.0 just proceeds to a blank page. Thus the problem seems to be related to the special character since replacing G131 to G132 would work with both versions. Cheers --&#91;&#91;kgh&#93;&#93; 17:09, 24 February 2011 (UTC)


 * I can't reproduce this problem either. What MySQL version (assuming you're using MySQL) and PHP version are you using? Yaron Koren 20:17, 28 February 2011 (UTC)

Problem with identifying text to be replaced
Hi, I have a problem which is puzzling me. I wanted to replace the term [portfolio_slideshow] which occurred on about 150 pages. However it only replaced 50 of these occurrences - the ones the extension was able to identify. The other 100 appearances seem to be some sort of invisible. I cannot find any difference between both cases. Some kind of tip how to solve this would be cool. Cheers --&#91;&#91;kgh&#93;&#93; 13:17, 22 February 2011 (UTC)


 * I have no idea. Different namespace? Yaron Koren 17:37, 22 February 2011 (UTC)


 * Sadly this is not the case. I even selected all namespaces without helping the cause. However it would not have been necessary since the text is only included in the main namespace. Perhaps this extension uses another search mechanism than MW itself which might have caused the problem. One of my ideas was that this extension might need a leading and trailing blanc character. However this would not explain why it worked in 50 cases. Perhaps this is something for Robert Stack ;-) Cheers --&#91;&#91;kgh&#93;&#93; 17:18, 24 February 2011 (UTC)


 * I just made the observation that ReplaceText stopped working at all. It just does not pick up the text to be replaced. I am working on MW 1.16.2, SWM 1.5.5 and RT 0.8.1. I hope that this is not a big problem. Cheers --&#91;&#91;kgh&#93;&#93; 09:23, 28 February 2011 (UTC)


 * Could it be that your job queue has a backlog? All of RT's replacements are done via the job queue. Yaron Koren 14:13, 28 February 2011 (UTC)


 * No, that is not the case. I just ran runJobs.php to make sure and tried unsuccessfully to do a replacement. It still does not find the text to be replaced though the standard MW search does. I think a job queue just prevents the replacements to be done right away until it is their turn. Whilst I was at it I thought of one more thing that might result in this behaviour and tested it. That is what I found out: It does do replacements in all namespaces except for pages generated with semantic templates, e. g. page "Hello World" containing . This extension seems to ignore the source code of such pages. Thus "Hello" and "World" may not be replaced. However this would explain the partial replacement I reported about on Feb. 22, 2011 too. This problem looks now more like a feature request than an problem. Cheers --&#91;&#91;kgh&#93;&#93; 14:57, 28 February 2011 (UTC)


 * What's the feature request? Yaron Koren 15:28, 28 February 2011 (UTC)


 * The feature request would be that Replace Text will be able to pick up the source code of pages containing semantic templates instead of ignoring it unless this behaviour is a bug. --&#91;&#91;kgh&#93;&#93; 16:36, 28 February 2011 (UTC)

That seems like a bug report, not a feature request... still, I find that very strange. Do you have a case where a simple string like "Hello" doesn't get replaced, and you can duplicate the problem consistently? Yaron Koren 18:24, 28 February 2011 (UTC)

RegExp: How to match whether a substring is there or not?
I want to replace 'customdate' to 'datepicker' and 'customdatetime' to 'datetimepicker'. In the regexp language I'm used to (the one 'sed' uses), I'd do it like that:  - how to do it with Replace Text?

I tried a couple of things, but can't get it to work. When I use  as original text and   as replacement text, I get   (ok) and   (huh?). Is this a bug, or am I doing it wrong? --Patrick Nagel 10:19, 7 March 2011 (UTC)


 * I don't think it's a bug - I think it's just using "greedy matching", matching the bare string "customdate" in all cases and ignoring the rest. By the way, I believe the string "[time]" means "any individual character of t, i, m and e" - something like ((time)*) instead might be preferable. But I'm not sure about that, and I'm also not sure if it's related to the problem. Yaron Koren 15:36, 7 March 2011 (UTC)